package com.sunlake.spring.main.common.enums.http;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * HTTP状态码枚举类
 * 定义系统中常用的HTTP状态码
 * @author by liuhanzhi
 */
@Getter
@AllArgsConstructor
public enum HttpStatusEnum {
    
    /**
     * 成功状态码
     */
    SUCCESS(200, "成功"),
    CREATED(201, "创建成功"),
    /**
     * 客户端错误状态码
     */
    BAD_REQUEST(400, "请求参数错误"),
    UNAUTHORIZED(401, "未认证"),
    PAYMENT_REQUIRED(402, "支付相关"),
    FORBIDDEN(403, "无权限"),
    NOT_FOUND(404, "资源不存在"),
    CONFLICT(409, "资源冲突"),
    UNPROCESSABLE_ENTITY(422, "参数验证失败"),
    TOO_MANY_REQUESTS(429, "请求过于频繁"),
    /**
     * 服务器错误状态码
     */
    INTERNAL_SERVER_ERROR(500, "服务器内部错误");
    /**
     * 状态码
     */
    private final int code;
    /**
     * 状态描述
     */
    private final String message;
    /**
     * 根据状态码获取枚举实例
     * @param code 状态码
     * @return 对应的枚举实例，如果不存在则返回null
     */
    public static HttpStatusEnum getByCode(int code) {
        for (HttpStatusEnum status : values()) {
            if (status.getCode() == code) {
                return status;
            }
        }
        return null;
    }
}